A standard adopted by the Institute for Electrical and Electronics Engineers (IEEE), “IEEE 1394-2000 Standard For A High Performance Serial Bus,” is an international standard for implementing an economical high-speed serial bus architecture. This standard provides a universal input/output connection for interconnecting digital devices including, for example, audio-visual equipment and personal computers.
The IEEE 1394-2000 standard supports both asynchronous and isochronous format data transfers. Asynchronous transfers are data transfer operations which transfer data from a source node to a destination node and take place as soon as permitted after initiation. An example of an application appropriate for asynchronous data transfer is communication of a still image or text document. Control commands can also be sent asynchronously.
Isochronous data transfers are real-time data transfers which take place such that time intervals between significant instances have the same duration at both the transmitting and receiving applications. An example of an application suitable for the transfer of data isochronously is the transfer of audio-visual data (AV data) between devices, such as a video camera and a television set. The video camera records sounds and images (AV data) and stores the data in discrete segments on tape. The data payload included in each packet represents the image and/or sound recorded over a limited period of time. The video camera then transfers each segment in a packetized manner during an appropriate interval for reproduction by the television set. In this manner, a transmitted sequence of related isochronous data packets constitutes an AV program, such as a television program or a motion picture.
The IEEE 1394-2000 standard bus architecture provides multiple channels for isochronous data communication between applications. A six-bit channel number is broadcast with the data to allow reception by the appropriate application. This allows multiple applications to concurrently communicate isochronous data across the bus structure without interfering with each other.
The cable required by the IEEE 1394-2000 standard is relatively thin in size compared to other bulkier cables used to connect such devices. The IEEE 1394-2000 cable environment is a network of nodes connected by point-to-point links, each link including a port for each node's physical connection and the cable between them. The physical topology for the cable environment of an IEEE 1394-2000 serial bus is a non-cyclic network of multiple ports, with finite branches. A primary restriction on the cable environment is that nodes must be connected together without forming any closed loops.
Devices can be added and removed from an IEEE 1394-2000 bus while the bus is active. If a device is so added or removed, the bus automatically reconfigures itself for transmitting data between the then existing nodes. A node is considered a logical entity with a unique address on the bus structure. Each node provides an identification ROM, a standardized set of control registers and its own address space.
The IEEE 1394-2000 cables connect ports together on different nodes. Each port includes terminators, transceivers and logic. A node can have multiple ports at its physical connection. The cable and ports act as bus repeaters between the nodes to simulate a single logical bus. The cable physical connection at each node includes one or more ports, arbitration logic, a resynchronizer and an encoder. Each of the ports provide the cable media interface into which the cable connector is connected. The arbitration logic provides access to the bus for the node. The resynchronizer takes received data-strobe encoded data bits and generates data bits synchronized to a local clock for use by the applications within the node. The encoder takes either data being transmitted by the node or data received by the resynchronizer, which is addressed to another node, and encodes it in data-strobe format for transmission across the IEEE 1394-2000 serial bus. Using these components, the cable physical connection translates the physical point-to-point topology of the cable environment into a virtual broadcast bus, which is expected by higher layers of the system. This is accomplished by taking all data received on one port of the physical connection, resynchronizing the data to a local clock and repeating the data out of all of the other ports from the physical connection.
The IEEE 1394-2000 standard defines a protocol as illustrated in FIG. 1. This protocol includes a serial bus management block 10 coupled to a transaction layer 12, a link layer 14 and a physical layer 16. The physical layer 16 provides the electrical and mechanical connection between a device or application and the IEEE 1394-2000 cable. The physical layer 16 also provides arbitration to ensure that all devices coupled to the IEEE 1394-2000 bus have access to the bus as well as actual data transmission and reception. The link layer 14 provides data packet delivery service for both asynchronous and isochronous data packet transport. This supports both asynchronous data transport, using an acknowledgment protocol, and isochronous data transport, providing real-time guaranteed bandwidth protocol for just-in-time data delivery. The transaction layer 12 supports the commands necessary to complete asynchronous data transfers, including read, write and lock. The serial bus management block 10 contains an isochronous resource manager for managing isochronous data transfers. The serial bus management block 10 also provides overall configuration control of the serial bus in the form of optimizing arbitration timing, guarantee of adequate electrical power for all devices on the bus, assignment of the cycle master, assignment of isochronous channel and bandwidth resources and basic notification of errors.
The IEEE 1394-2000 standard defines a structured packet into which information is encapsulated for isochronous transfer upon the bus. Each isochronous data packet includes at least an IEEE 1394-2000 packet header. The packet header includes overhead information necessary for proper communication of the packet. Typically, content data, such as audio-visual data, is included in the packet, in a data field following the packet header. When an isochronous data packet is received, the receiving device must generally separate the header information from the content data so that the content data can be appropriately processed, such as for display. In addition, due to timing considerations, isochronous packets which include only header information and no content data portion are occasionally communicated via an IEEE 1394-2000 bus.
IEEE 1394-2000 isochronous data packets are transmitted over isochronous channels using isochronous arbitration or over asynchronous streams using asynchronous arbitration. Transmitting over isochronous channels, an isochronous data packet is transmitted only during the isochronous period. The isochronous period is controlled by the cycle master, which signals the start of the period with a cycle start packet. The period ends when a subaction gap is observed, which happens after all isochronous transmitters have had a chance to transmit. Two resources, bandwidth and channel number, are allocated from the isochronous resource manager registers BANDWIDTH_AVAILABLE and CHANNELS_AVAILABLE, respectively. For a given channel number, no more than one transmitter can transmit an isochronous data packet with that channel number each isochronous period.
Using asynchronous streams, some of the aforementioned requirements related to transmitting isochronous data packets over isochronous channels are relaxed. Transmitting over asynchronous streams, an isochronous data packet is transmitted during the asynchronous period, subject to the same arbitration requirements as other request subactions. The channel number is allocated from the isochronous resource manager register CHANNELS_AVAILABLE. Multiple nodes can transmit isochronous data packets with the same channel number or the same node can transmit multiple isochronous data packets with the same channel number as often as desired, subject to arbitration fairness.
The IEEE 1394-2000 standard does not specify particular formats for the content data of the data field. Rather, the organization of content data in accordance with a particular format and the interpretation of data field contents are functions of the transmitting and receiving applications, respectively. In order to facilitate interoperability between a wide range of digital devices, data fields should encapsulate data in accordance with a standardized format. One such format that has gained wide acceptance is the Common Isochronous Protocol (CIP). The data field may contain a header and audio-visual content data, as when the CIP Transport Protocol is used. This header within the data field is the CIP header. For CIP transport, some data fields contain only the CIP header. This use of a header and data protocol within the data field is referred to as an Isochronous Transport Protocol. A receiver of such isochronous packets cannot necessarily predict when a packet will not include a content data portion until after the IEEE 1394-2000 header information is received.
The AV/C Digital Interface Command Set is a command set used for transactions between consumer audio/video equipment over an IEEE 1394-2000 serial bus. This AV/C command set makes use of the Function Control Protocol (FCP) defined by IEC-61883, the ratified international standard for the transport of audio/video command requests and responses. Neither the IEEE 1394-2000 serial bus nor the AV/C Command Set provide a master-slave relationship between the devices coupled within the IEEE 1394-2000 serial bus network. Instead, both the IEEE 1394-2000 serial bus and the AV/C Command Set operate based on the cooperative peer-to-peer coexistence of devices within the network.
IEC-61883 is a ratified international standard for the transport of audio/video command requests and responses. This standard uses the concept of plugs and plug control registers to manage and control the attributes of isochronous data flows. It should be noted that plugs do not physically exist on an audio/video device, but a plug is used to establish an analogy with existing audio/video devices where each flow of information is routed through a physical plug.
An isochronous data flow is sent from one transmitting device to one or more receiving devices by transmitting isochronous packets on an isochronous channel of the IEEE 1394-2000 serial bus. Each isochronous data flow is transmitted to an isochronous channel through one output plug on the transmitting device and is received from that isochronous channel through one input plug on the receiving device.
The transmission of an isochronous data flow through an output plug is reflected by data in an output plug control register (oPCR) and an output master plug register (oMPR) located on the transmitting device. The output master plug register contains all attributes that are common to all isochronous data flows transmitted by the corresponding transmitting device. The output plug control register contains all attributes of the corresponding isochronous data flow that are independent from attributes of other isochronous data flows transmitted by the transmitting device.
The reception of an isochronous data flow through an input plug is reflected by an input plug control register (iPCR) and an input master plug register (iMPR) located on the receiving device. The input master plug register contains all attributes that are common to all isochronous data flows received by the receiving device. The input plug control register contains all attributes of the corresponding isochronous data flow that are independent from attributes of other isochronous data flows received by the receiving device.
An isochronous data flow can be controlled by any device connected to the IEEE 1394-2000 bus by modifying the corresponding plug control registers and by initiating or connecting to an existing transmission. Plug control registers can be modified through asynchronous transactions on the IEEE 1394-2000 bus or by internal modifications if the plug control registers are located on the controlling device.
To transport isochronous data between two audio/video devices on the IEEE 1394-2000 bus, it is necessary for an application to virtually connect an output plug on the transmitting device to an input plug on the receiving device using an isochronous channel. The relationship between one input plug, one output plug and one isochronous channel is called a point-to-point connection. A point-to-point connection can only be broken by the application that established it. An application can also just start the transmission or reception of an isochronous data flow on its own device by connecting one of its output or input plugs respectively to an isochronous channel. The relationship between one output plug and one isochronous channel is called a broadcast-out connection. The relationship between one input plug and one isochronous channel is called a broadcast-in connection. Broadcast-out and broadcast-in connections are collectively called broadcast connections. A broadcast connection can be established only by the device on which the plug is located, but it can be broken by any device.
5C Digital Transmission Content Protection (DTCP) defines a cryptographic protocol for protecting audio/video (A/V) content from unauthorized copying, intercepting, and tampering as it traverses digital transmission mechanisms such as a high-performance serial bus that conforms to the IEEE 1394-2000 standard. Only legitimate A/V content delivered to a source device via another approved copy protection system, such as the DVD Content Scrambling System, will be protected by this copy protection system. A Digital Transmission Licensing Administrator (DTLA) is responsible for establishing and administering the content protection system described in the 5C DTCP specification. According to the 5C DTCP DTLA licensing rules, encrypted audio/video digital content cannot be transmitted using asynchronous block data transfers. However, isochronous packets do adhere to 5C DTCP DTLA licensing rules for transmitting and receiving encrypted audio/video digital content.
Conventional systems can transmit digital content by using IEEE 1394-2000 asynchronous data packet transfers or by using IEEE 1394-2000 isochronous packets over isochronous channels or over asynchronous streams. Asynchronous data packet transfers are inherently reliable, as the asynchronous data packet format provides for transmission failure detection and retransmission capabilities. Additionally, data transfers using asynchronous data packets can be held off easily by the receiving device, when necessary, because of device throughput limitations. Most conventional systems transmit content in non real-time using asynchronous data packets. However, asynchronous data packet transfer rates cannot be guaranteed. Therefore, when trying to perform faster than real-time digital content transfers on a bus with other data transfers occurring simultaneously, the necessary bandwidth may not be available.
Further, transmission of asynchronous data packets can not enforce 5C copy protection of the data being transmitted. In order to enforce 5C copy protection, isochronous data packets must be used. However, isochronous data packets inherently do not provide a method for indicating packet transmission errors to the transmitting device. Further, data transfers using isochronous data packets do not provide a method for the receiving device to hold off transmission from the transmitting device because of throughput limitations at the receiving device.